import asyncio
import websockets

# WebSocket 服务器的 URL
WebSocketUrlReceiver = "ws://39.106.77.250:8089/ws?command_sender"  # 替换为实际的 WebSocket 服务器地址

# 从文件读取数据并逐行发送
async def send_gps_data():
    async with websockets.connect(WebSocketUrlReceiver) as websocket:
        with open(r"C:\Users\17963\Desktop\ros_workspace\navigation2_tutorials\my_test_dir\gps\rtk_data.txt", "r") as file:  # 打开 GPS 数据文件
            for line in file:
                line = line.strip()  # 移除多余的空白字符
                if line.startswith("b'$KSXT") and line.endswith("'"):
                    try:
                        # 提取经度和纬度
                        data = line[2:-1].split(",")  # 去掉前缀 b' 和后缀 '
                        lng = data[2]  # 第 3 个字段是经度
                        lat = data[3]  # 第 4 个字段是纬度
                        
                        # 构造 WebSocket 消息
                        message = f"gps|{lng}|{lat}"
                        
                        # 发送消息到 WebSocket
                        await websocket.send(message)
                        print(f"发送消息: {message}")
                        
                        # 每秒发送10次
                        await asyncio.sleep(0.1)  # 等待 0.1 秒
                    except IndexError:
                        print(f"行数据格式错误，跳过: {line}")
                        continue  # 如果数据不完整，跳过此行
                else:
                    print(f"无效数据行，跳过: {line}")

# 运行 WebSocket 客户端
async def main():
    await send_gps_data()

# 启动异步任务
asyncio.run(main())
